package com.hw.job_5;

import java.util.*;

/**
 *  使用集合实现斗地主游戏的部分功能，要求如下：
 *  （1）首先准备 54 张扑克牌并打乱顺序。
 *  （2）由三个玩家交替摸牌，每人 17 张扑克牌，最后三张留作底牌。
 *  （3）查看三个玩家手中的扑克牌和底牌。
 *  （4）其中玩家手中的扑克牌需要按照大小顺序打印，规则如下：
 *     手中扑克牌从大到小的摆放顺序：大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3
 */
public class job_5 {

    public static void main(String[] args) {

        List<Poker> pokerGroup = Poker.createPokeGroup();
        Collections.shuffle(pokerGroup);
        System.out.println("洗牌之后，pokerGroup = " + pokerGroup);

        // 创建三个玩家
        int playerCount = 3;
        Player[] players = new Player[playerCount];
        for (int i = 0; i < playerCount; i++) {
            Player p = new Player();
            players[i] = p;
        }

        // 开始发牌
        // 底牌集合
        List<Poker> retainPokrs = new ArrayList<>();
        for (int i = 0; i < pokerGroup.size(); i++) {
            Poker poker = pokerGroup.get(i);
            if (i < pokerGroup.size()-3) {
                players[i % players.length].addPoke(poker);
            } else {
                retainPokrs.add(poker);
            }
        }

        // 打印扑克牌
        System.out.println("---------------开始查看玩家的手牌和底牌----------------");
        for (int i = 0; i < players.length; i++) {
            // 进行排序
            Collections.sort(players[i].getPokers());
            System.out.println("玩家" + (i+1) + "的手牌是：\n" + players[i].getPokers());
        }
        System.out.println("剩余的底牌是：\n" + retainPokrs);
    }
}
